package cn.com.okgo.request.base;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.File;
import java.util.List;
import java.util.Map;

import cn.com.okgo.model.Bytes;
import okhttp3.MediaType;

/**
 * Created by luwenlong on 2017/8/28.
 */

public interface IBody<R> {

    /**
     * 上传String
     *
     * @param string
     * @return
     */
    R upString(String string);

    R upString(String string, MediaType mediaType);

    /**
     * 上传 json
     *
     * @param json
     * @return
     */
    R upJson(String json);

    R upJson(JSONObject jsonObject);

    R upJson(JSONArray jsonArray);


    /**
     * 上传不带key的文件
     *
     * @param file
     * @return
     */
    R upFile(File file);

    R upFile(File file, MediaType mediaType);

    /**
     * 上传多个文件
     *
     * @param map
     * @return
     */
    R upFile(Map<String, File> map);

    /**
     * 上传文件
     *
     * @param key
     * @param file
     * @return
     */
    R upFile(String key, File file);

    /**
     * 上传一个key带多个文件
     *
     * @param key
     * @param files
     * @return
     */
    R upFile(String key, List<File> files);

    /**
     * 上传字节
     *
     * @return
     */

    R upByts(Bytes bytes);

    R upBytes(List<Bytes> list);
}
